<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
      body {
        padding: 20px;
      }
      div, li, p {
        line-height: 40px;
      }
      span {
        color: red;
      }
  </style>
</head>
<body>
  <ul>
    <li>
      ES6提出了两个新的声明变量的命令：let和const。其中let完全可以取代var。因为两者域意相同，而且let没有副作用<span>建议不再使用var命令，而是使用let命令取代</span>
    </li>
    <li>
      在let const之间，建议优先使用const,尤其是在全局环境中，不应该设置变量，只应该设置常量。
    </li>
    <li>
      const优于let有以下几个原因
      <ul>
        <li>
          提醒阅读的人，这个变量不应该改变
        </li>
        <li>
          比较符合函数式编程思想，运算不改变值，只是新建值，而且这样也有利于将来的分布式运算
        </li>
        <li>
          JavaScript编译器会对const进行优化，所以多使用const有利于提供程序的运行效率
        </li>
      </ul>
    </li>

    <li>
      所有的函数都应该设置为常量
    </li>
    <li>
      静态字符串一律使用单引号或反引号，不使用双引号。动态字符串使用反引号。
    </li>
    <li>
      使用数组成员对变量进行赋值时，优先使用解构赋值；函数的参数如果时对象的成员，优先使用解构赋值；如果函数返回多个值，优先使用对象的解构赋值，而不是数组的解构赋值
    </li>
    <li>
      对象尽量静态化。一旦定义，就不得随意添加新的属性。<span>如果添加属性不可避免，要使用Object.assign方法</span>
    </li>
    <li>
      如果对象的属性名是动态的，可以在创造对象的时候使用属性表达式定义，对象的属性和方法尽量采用简洁表达法，这样易于描述和编写
    </li>
    <li>
      使用扩展符（...）赋值数组,Array.from方法将类似数组的对象转为数组
    </li>
    <li>
      箭头函数取代Function.prototype.bind,不应再用self, that, _this绑定this
    </li>
    <li>
      不要在函数体内使用arguments变量，使用Rest运算符（...）代替。因为rest运算符可以显式表明我们想要获得的参数
    </li>
    <li>
      使用默认语法设置函数参数的默认值
    </li>
    <li>
      注意区分Object和Map，只有模拟实体对象时才使用Object。如果只是需要key:value的数据结构，则使用Map。因为Map有内建的遍历机制
    </li>
    <li>
      尽量使用ES6的模块语法代替CommonJS模块语法
    </li>
    <li>
      export 与 export default 不要同时使用
    </li>
    <li>
      eslint是一个语法规则和代码风格的检查工具
      <ul>
        <li>安装ESLint npm i -g eslint</li>
        <li>然后安装Airbub语法规则(也可以是别的规则): npm i -g eslint-config-airbub</li>
        <li>
          根目录下新建.eslint文件并配置ESLint
        </li>
      </ul>
    </li>
  </ul>
</body>
</html>